package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.AssociacaoDAO;
import com.model.Associacao;

public class AssociacaoFacade implements Serializable{
	private static final long serialVersionUID = 1L;
	
	private AssociacaoDAO associacaoDAO = new AssociacaoDAO();

	public void createAssociacao(Associacao associacao) {
		associacaoDAO.beginTransaction();
		associacaoDAO.save(associacao);
		associacaoDAO.commitAndCloseTransaction();
	}

	public void updateAssociacao(Associacao associacao) {
		associacaoDAO.beginTransaction();
		
		Associacao persistedAssociacao = associacaoDAO.find(associacao.getId());
		persistedAssociacao.setAssociado(associacao.getAssociado());
		
		persistedAssociacao.setInicio(associacao.getInicio());
		persistedAssociacao.setTermino(associacao.getTermino());
		persistedAssociacao.setContribuicao(associacao.getContribuicao());
		
		associacaoDAO.update(persistedAssociacao);
		associacaoDAO.commitAndCloseTransaction();
	}

	public Associacao findAssociacao(int associacaoId) {
		associacaoDAO.beginTransaction();
		Associacao associacao = associacaoDAO.find(associacaoId);
		associacaoDAO.closeTransaction();
		return associacao;
	}

	public List<Associacao> listAll() {
		associacaoDAO.beginTransaction();
		List<Associacao> result = associacaoDAO.findAll();
		associacaoDAO.closeTransaction();
		return result;
	}

	public void deleteAssociacao(Associacao associacao) {
		associacaoDAO.beginTransaction();
		Associacao persistedAssociacao = associacaoDAO.findReferenceOnly(associacao.getId());
		associacaoDAO.delete(persistedAssociacao);
		associacaoDAO.commitAndCloseTransaction();
	}
}